///////////////////////////////////////////////////////////////////////////
//
// Spring Engine Source File.
// Copyright (C), Dengtao 2011-2021
// ----------------------------------------------------------------------
// File name:   SfMemoryAllocator.h
// Version:     v1.0.0
// Created:     2013/06/14 12:55 by dengtao
// Compilers:   Visual Studio 2008
// Description: 
// ----------------------------------------------------------------------
// History:
//
///////////////////////////////////////////////////////////////////////////

#ifndef _SfMemoryAllocator_H_
#define _SfMemoryAllocator_H_

#include "SfBaseDefines.h"

namespace Sunflower
{
//////////////////////////////////////////////////////////////////////////
//Summary:
//	Memory allocator.
//////////////////////////////////////////////////////////////////////////
class MemoryAllocator
{
public:
	//
	//Summary:
	//	constructor.
	MemoryAllocator(){}

	//
	//Summary:
	//	destructor.
	virtual ~MemoryAllocator(){}

	//
	//Summary:
	//	interface : allocate memory.
	virtual void* Alloc(size_t size) = 0;

	//
	//Summary:
	//	interface: free memory
	virtual bool Free(void* p) = 0;

protected:
	MemoryAllocator(const MemoryAllocator&);
	MemoryAllocator& operator =(const MemoryAllocator&);
};

}

#endif